/*
 * @(#)UserRoleController.java v2.0 2016年11月22日
 * 百联集团	版权所有
 * 
 * 文件描述...
 *
 * @Title: UserRoleController.java 
 * @Package com.bailiangroup.gsp.oms.controller 
 * @author tylong
 * @date 2016年11月22日 下午11:35:41
 * @version v2.0
 * 历史版本：
 * 	1. 【2016年11月22日】 创建文件   by tylong
 */
package com.ess.web.controller.user;


import com.bailian.pagehelper.PageInfo;
import com.blgroup.b2b.common.constant.SysMessage;
import com.blgroup.b2b.common.entity.MessageResultInfo;
import com.blgroup.b2b.common.model.UserRole;
import com.blgroup.b2b.web.dto.AddUserRoleReqDto;
import com.blgroup.b2b.web.dto.DeleteUserRoleReqDto;
import com.blgroup.b2b.web.dto.QueryUserRoleReqDto;
import com.blgroup.b2b.web.service.sys.UserRoleService;
import com.blgroup.b2b.web.util.BeanUtils;
import com.ess.web.controller.base.BaseController;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

/** 
 * 用户角色Controller
 * 
 * @ClassName: UserRoleController 
 * @author tylong
 * @date 2016年11月22日 下午11:35:41
 * @version v2.0 
 *  
 */
@Controller
@RequestMapping(value = "/sys")
public class UserRoleController extends BaseController {

	/**
	 * 日志变量
	 */
	static final Logger logger = LoggerFactory.getLogger(UserRoleController.class);
	/**
	 * 用户角色service
	 */
	@Autowired
	UserRoleService userRoleService;
	/**
	 * 
	 * 方法描述：   删除用户角色
	 * 业务逻辑说明  ：删除用户角色 
	 * 1、根据唯一主键删除<br/>
	 * @Title: deleteUserRole 
	 * @date 2016年11月22日 下午8:31:28
	 * @author tylong
	 * @modifier 
	 * @modifydate 
	 * @param request
	 * @param response
	 * @param dto
	 * @return
	 */
	@RequestMapping(value = "/deleteUserRole", method = RequestMethod.POST)
	@ResponseBody
	public Object deleteUserRole(HttpServletRequest request, HttpServletResponse response, @Validated @RequestBody DeleteUserRoleReqDto dto) {
		MessageResultInfo resultInfo=new MessageResultInfo();
		try {
			//删除用户角色
			resultInfo=userRoleService.deleteUserRole(dto);
		} catch (Exception e) {
			logger.error("删除用户角色失败", e);
			resultInfo.setResultCode(SysMessage.SYSTEM_FAILURE_CODE);
			resultInfo.setResultMsg("删除用户角色失败");
		}
		return resultInfo;
	}
	/**
	 * 
	 * 方法描述：   添加用户角色
	 * 业务逻辑说明  ：添加用户角色 
	 * 1、参数校验<br/>
	 * @Title: addUserRole 
	 * @date 2016年11月22日 下午8:32:18
	 * @author tylong
	 * @modifier 
	 * @modifydate 
	 * @param request
	 * @param response
	 * @param dto
	 * @return
	 */
	@RequestMapping(value = "/addUserRole", method = RequestMethod.POST)
	@ResponseBody
	public Object addUserRole(@Valid @ModelAttribute("dto") AddUserRoleReqDto dto, HttpServletRequest request, HttpServletResponse response) {
		MessageResultInfo resultInfo=new MessageResultInfo();
		try {
			resultInfo=userRoleService.addUserRole(dto);
		} catch (Exception e) {
			logger.error("新增用户角色失败", e);
			resultInfo.setResultCode(SysMessage.SYSTEM_FAILURE_CODE);
			resultInfo.setResultMsg("新增用户角色失败");
		}
		return resultInfo;
	}
	/**
	 * 
	 * 方法描述：   查询用户角色列表
	 * 业务逻辑说明  ：查询用户角色列表 
	 * @Title: queryUserRole 
	 * @date 2016年12月2日 下午6:04:48
	 * @author tylong
	 * @modifier 
	 * @modifydate 
	 * @param model
	 * @param dto
	 * @param result
	 * @param request
	 * @return
	 */
	@RequiresPermissions("user:queryUserRole")
	@RequestMapping(value="/queryUserRole",method=RequestMethod.GET)
	public ModelAndView queryUserRole(@Valid @ModelAttribute("dto") QueryUserRoleReqDto dto, BindingResult bindingResult, Model model, HttpServletRequest request) {
		//查询用户角色列表
		ModelAndView mv=new ModelAndView("sys/userRoleList");
		try {
			BeanUtils.convertEmptyStringToNull(dto);
			PageInfo<UserRole> pageInfo=userRoleService.queryUserRole(dto);
			mv.addObject(pageInfo);
		} catch (Exception e) {
			logger.error(e.getMessage());
		}
		return mv;
	}
	
	@RequestMapping(value = "/userBindRole", method = RequestMethod.POST)
	@ResponseBody
	public Object userBindRole(@Valid @ModelAttribute("dto") AddUserRoleReqDto dto, HttpServletRequest request, HttpServletResponse response) {
		MessageResultInfo resultInfo=new MessageResultInfo();
		try {
			resultInfo=userRoleService.userBindRole(dto);
		} catch (Exception e) {
			logger.error("用户绑定角色失败", e);
			resultInfo.setResultCode(SysMessage.SYSTEM_FAILURE_CODE);
			resultInfo.setResultMsg("用户绑定角色失败");
		}
		return resultInfo;
	}
	
}
